package com.atguigu.springcloud.service;

import com.atguigu.springcloud.entities.CommonResult;
import com.atguigu.springcloud.entities.Payment;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@Component
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")//这里指定消费者项目要调用Eureka上的哪个服务，这里使用服务提供项目暴露的服务别名
public interface PaymentFeignService {

    //直接复制粘贴服务提供者项目中service接口里要调用的服务方法，但是返回结果类型需要改为返回给前端的实体类类型

   // CommonResult<Payment> getPaymentById(@Param("id") Long id);

    //也可以将服务提供者项目controller类中处理请求方法的方法头+请求映射地址信息拷贝粘贴到本接口中；
    //因为OpenFeign支持SpringMvc中的注解，而且服务提供者项目的controller处理请求方法内也是调用service中的方法；
    //所有无论复制粘贴服务提供者项目中的什么，最终目的都是调用服务提供者项目中服务，也就是业务处理方法。
    @GetMapping(value="/payment/get/{id}")
    public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id);

    @GetMapping(value = "/payment/feign/timeout")
    String paymentFeignTimeOut();
}
